1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.util.concurrent;
18
19 import com.google.common.collect.ImmutableList;
20
21 import junit.framework.TestCase;
22
23 import java.util.List;
24 import java.util.concurrent.Callable;
25 import java.util.concurrent.TimeUnit;
26
27
28
29
30
31
32 public class AbstractListeningExecutorServiceTest extends TestCase {
33
34 public void testSubmit() throws Exception {
35
36
37
38
39
40 TestListeningExecutorService e = new TestListeningExecutorService();
41
42 TestRunnable runnable = new TestRunnable();
43 ListenableFuture<?> runnableFuture = e.submit(runnable);
44 assertTrue(runnableFuture instanceof ListenableFutureTask);
45 assertTrue(runnableFuture.isDone());
46 assertTrue(runnable.run);
47
48 ListenableFuture<String> callableFuture = e.submit(new TestCallable());
49 assertTrue(callableFuture instanceof ListenableFutureTask);
50 assertTrue(callableFuture.isDone());
51 assertEquals("foo", callableFuture.get());
52
53 TestRunnable runnable2 = new TestRunnable();
54 ListenableFuture<Integer> runnableFuture2 = e.submit(runnable2, 3);
55 assertTrue(runnableFuture2 instanceof ListenableFutureTask);
56 assertTrue(runnableFuture2.isDone());
57 assertTrue(runnable2.run);
58 assertEquals((Integer) 3, runnableFuture2.get());
59 }
60
61 private static class TestRunnable implements Runnable {
62 boolean run = false;
63
64 @Override
65 public void run() {
66 run = true;
67 }
68 }
69
70 private static class TestCallable implements Callable<String> {
71 @Override
72 public String call() {
73 return "foo";
74 }
75 }
76
77
78
79
80 private static class TestListeningExecutorService extends AbstractListeningExecutorService {
81
82 @Override
83 public void execute(Runnable runnable) {
84 assertTrue(runnable instanceof ListenableFutureTask);
85 runnable.run();
86 }
87
88 @Override
89 public void shutdown() {
90 }
91
92 @Override
93 public List<Runnable> shutdownNow() {
94 return ImmutableList.of();
95 }
96
97 @Override
98 public boolean isShutdown() {
99 return false;
100 }
101
102 @Override
103 public boolean isTerminated() {
104 return false;
105 }
106
107 @Override
108 public boolean awaitTermination(long timeout, TimeUnit unit) {
109 return false;
110 }
111 }
112 }